#ifndef SINGLETON_H
#define SINGLETON_H

class Uncopyable
{
protected:
	Uncopyable() { }
	Uncopyable(const Uncopyable&);
	Uncopyable& operator=(const Uncopyable&);
private:
	//prevents assignment
	
};




template <class T>
class Singleton : public Uncopyable
{
private:
	Singleton() { }

public:
	static T* Instance()
	{
		static T t;
		return &t;
	}
};

#endif